﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Transactions;

namespace Sisco.AccesoDatos
{
    public class EquipoProgramaDAO
    {
        SiscoEntities conexion;

        public List<RELACION_EQUI_PROG> Listar()
        {
            List<RELACION_EQUI_PROG> lista = new List<RELACION_EQUI_PROG>();

            using (conexion = new SiscoEntities())
            {
                lista = conexion.RELACION_EQUI_PROG.Include("EQUIPO").
                                                    Include("PROGRAMA").
                                                    Where(x => x.ELIMINADO == 0).ToList();
            }

            return lista;
        }

        public int Registrar(EQUIPO equipo, PROGRAMA programa)
        {
            using (conexion = new SiscoEntities())
            {
                RELACION_EQUI_PROG nuevaRelacion = new RELACION_EQUI_PROG()
                {
                    IDEQUIPO = equipo.ID,
                    IDPROGRAMA = programa.ID,
                    FECHACREACION = DateTime.Now,
                    ELIMINADO = 0
                };

                conexion.RELACION_EQUI_PROG.Add(nuevaRelacion);
                return conexion.SaveChanges();
            }
        }

        public int Registrar(EQUIPO equipo, List<PROGRAMA> programas)
        {
            using (conexion = new SiscoEntities())
            {
                int result = 0;

                using (TransactionScope ts = new TransactionScope())
                {
                    foreach (PROGRAMA p in programas)
                    {
                        result = result + this.Registrar(equipo, p);                        
                    }

                    ts.Complete();
                    return result;
                }
            }
        }
    }
}
